package com.yjd.api.banner;

import com.yjd.comm.app.model.BannerModel;
import com.yjd.comm.app.service.IBannerService;
import com.yjd.comm.base.control.BaseControl;
import com.yjd.comm.base.enums.DbWREnums;
import com.yjd.comm.util.*;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * 首页banner
 * Created by yangchangyan on 2017/6/30.
 */
@Controller("com.yjd.api.banner.BannerControl")
@Scope("prototype")
@RequestMapping("/banner")
public class BannerControl extends BaseControl{

    @Resource
    private IBannerService bannerService;

    /**
     * 滚动条列表
     * @param banner_type 1：PC，2：IOS，3：ANDROID
     * @return void
     * @throws Exception
     */
    @RequestMapping(value = "/m/list", method = RequestMethod.POST)
    public void list(Integer banner_type) throws Exception{
        Map<String, Object> paramMap = ServletUtil.getParameterMap(request);
        paramMap.remove("banner_type");
        // 查询所有banner
        List<BannerModel> allBnner = bannerService.getModelList(paramMap, DbWREnums.READ);
        List<Map<String,Object>> bannerInfo = new ArrayList<>();
        Map<String,Object> banner = null;
        for(BannerModel bm : allBnner){
            // 0:所有类型
            if(bm.getBanner_type() != 0 && banner_type != bm.getBanner_type()){
                continue;
            }
            banner = FrameUtil.newHashMap();
            banner.put("background", bm.getBackground());
            banner.put("href_path", bm.getHref_path());
            banner.put("title", bm.getTitle());
            if(1 == banner_type){
                banner.put("image_path", ServletUtil.getFileUrl(bm.getPc_image_path()));
            }
            if(2 == banner_type){
                banner.put("image_path", ServletUtil.getFileUrl(bm.getIos_image_path()));
            }
            if(3 == banner_type){
                banner.put("image_path", ServletUtil.getFileUrl(bm.getAndroid_image_path()));
            }
            bannerInfo.add(banner);
        }
        paramMap.put("banner", bannerInfo);
        this.successData(paramMap);
    }

    // 以下操作api中不提供，由后台banner管理去处理 com.yjd.back.contentmanager.BannerControl
//    /**
//     * 更具banner_id更新banner
//     * Created by yangchangyan on 2017/6/30.
//     * @param banner 要修改的内容
//     * @return void
//     * @throws
//     */
//    @RequestMapping(value = "/m/update", method = RequestMethod.POST)
//    public void update(BannerModel banner) throws Exception{
//        if(null == banner){
//            FrameUtil.throwBaseException1("参数错误");
//        }
//        if(null == banner.getBanner_id() || banner.getBanner_id() < 0){
//            FrameUtil.throwBaseException1("banner不存在");
//        }
//        int count = bannerService.update(banner);
//        if(count != 1){
//            this.errorMsg("更新失败，请稍后重试。");
//            return;
//        }
//        this.successMsg("更新成功");
//    }
//
//    /**
//     * 添加banner
//     * Created by yangchangyan on 2017/6/30.
//     * @param banner 添加的banner内容
//     * @return void
//     * @throws
//     */
//    @RequestMapping(value = "/m/insert", method = RequestMethod.POST)
//    public void insert(MultipartHttpServletRequest multipartRequest, BannerModel banner) throws Exception {
//        if(null == banner){
//            FrameUtil.throwBaseException1("参数错误");
//        }
//        if(StringUtils.isEmpty(banner.getTitle())){
//            FrameUtil.throwBaseException1("请输入标题!");
//        }
//
//        try {
//            Map<String, MultipartFile> mulFileMap = multipartRequest.getFileMap();
//
//            String imgPath = "";
//            // 上传PC banner图片
//            imgPath = this.uploadFile(mulFileMap.get("pc_imgfile"));
//            banner.setPc_image_path(imgPath);
//
//            // 上传ANDROID banner图片
//            imgPath = this.uploadFile(mulFileMap.get("android_imgfile"));
//            banner.setAndroid_image_path(imgPath);
//
//            // 上传IOS banner图片
//            imgPath = this.uploadFile(mulFileMap.get("ios_imgfile"));
//            banner.setIos_image_path(imgPath);
//
//            bannerService.insert(banner);
//        } catch (Exception e) {
//            FrameUtil.throwBaseException1("新增失败,"+e.getMessage());
//        }
//
//        this.successMsg("添加banner成功");
//    }
//
//    /**
//     * 删除指定banner
//     * Created by yangchangyan on 2017/6/30.
//     * @param banner_id 要删除的banner
//     * @return void
//     * @throws
//     */
//    @RequestMapping(value = "/m/delete", method = RequestMethod.POST)
//    public void delete(Long banner_id) throws Exception{
//        bannerService.delete(banner_id);
//        this.successMsg("删除成功");
//    }
//
//    /**
//     * 将图片上传至服务器，返回上传后的文件地址
//     * Created by yangchangyan on 2017/6/30.
//     *
//     * @param
//     * @return String 上传成功后的文件地址
//     * @throws
//     */
//    private String uploadFile(MultipartFile mulFile) throws Exception{
//        if(null == mulFile){
//            // 需要上传的文件为空，可能是因为不需要图片
//            return "";
//        }
//
//        // 原始文件名
//        String originalName = mulFile.getOriginalFilename();
//
//        // 创建本地缓存文件，文件路径：/tmp/m_back_{RandomString}
//        File temp = new File(request.getSession().getServletContext().getRealPath("/temp/")
//                + "m_back_" + StringUtil.getRandomString(5));
//
//        // 使用common io 工具将上传流中的图片数据写入本地缓存文件
//        FileUtils.copyInputStreamToFile(mulFile.getInputStream(), temp);
//
//        // 远程文件路径
//        String remotefile ="mfq_banner/"
//                + FrameUtil.getTime(null) + StringUtil.getRandomString(12)
//                + originalName.substring(originalName.lastIndexOf("."));
//
//        // 将本地缓存文件上传到远程
//        String uploadType = FrameUtil.getConstResource("uploadType");
//        FileUploadedModel fum = null;
//        if("oss".equals(uploadType)){
//            fum  = OSSClientUtil.uploadFile2OSS(temp,remotefile);
//            fum.setAttachurl(StaticAndPicsUtil.getPicsDataFullUrl(remotefile, true));
//            fum.setName(originalName.substring(0, originalName.length() - fum.getExt().length() - 1));
//        }
//        if("static".equals(uploadType)){
//            fum = FtpAllUtil.uploadFileItem(temp,FrameUtil.getConstResource("FTP.remotePath")+ remotefile);
//            fum.setAttachurl(ServletUtil.getUrl1("/"+remotefile, ServletUtil.UrlTypeEnum.PICS, null, null));
//        }
//
//        // 删除缓存文件
//        temp.delete();
//
//        return null == fum ? "" : fum.getAttachurl();
//    }
}
